/*

  FITS manipulations

  Copyright © 2011 F.Hroch (hroch@physics.muni.cz)

  This file is part of Munipack.

  Munipack is free software: you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation, either version 3 of the License, or
  (at your option) any later version.
  
  Munipack is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.
  
  You should have received a copy of the GNU General Public License
  along with Munipack.  If not, see <http://www.gnu.org/licenses/>.

  Note.

  Multiple use of AddOption is not supported. Therefore the

     fits -K NAXIS1 -K NAXIS2

  does not works and tokenizers(s) must be used on boths tails of pipes.

*/

#include "munipack.h"
#include <wx/wx.h>
#include <wx/tokenzr.h>

using namespace std;


bool Munipack::fits(MuniCmdLineParser& cmd)
{
  MuniProcess *action = new MuniProcess(&pipe,"fitsut");
  //MuniProcess *action = new MuniProcess(&pipe,"cat");
  pipe.push(action);

  wxString mode = "STRUCTURE";
  wxString a;

  if( cmd.Found("K",&a) || cmd.Found("keys",&a) ) {

    mode = "HEADER";

    wxStringTokenizer tokenizer(a, ",");
    while ( tokenizer.HasMoreTokens() )
      action << ("KEYWORD = '" + tokenizer.GetNextToken() + "'");
  }

  else if( cmd.Found("k") || cmd.Found("header") ) {

    mode = "HEADER";

  }

  else if( cmd.Found("t") || cmd.Found("table") ) {

    mode = "TABLE";

  }

  else if( cmd.Found("i") || cmd.Found("image") ) {

    mode = "IMAGE";

  }

  if( cmd.Found("short") )
    action << wxString("KEYLIST = 'SHORT'");

  for(size_t i = 1; i < cmd.GetParamCount(); i++)
    action << ("FILE = '" + cmd.GetParam(i) + "'");

  action << ("MODE = '" + mode + "'");

  pipe.Start();

  return true;
}
